Перейти к основному содержимому

3.06. Cassandra

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Cassandra

Cassandra хранит данные в колонках, а не в строках. Подходит для огромных объёмов данных (в основном, Big Data). Данные хранятся на диске. На первый взгляд может показаться, что это такие же таблицы, как в SQL, но это не так. Применяется эта технология в аналитике (логи), интернете вещей (данные с датчиков), соцсетях. Сама по себе колоночная структура - вещь сложная, мы сначала рассмотрим SQL, а затем, в разделе по ClickHouse, посмотрим на колоночную структуру.

Для того, чтобы не путать эти три понятия:

  • Cassandra является нереляционной NoSQL базой с колоночной структурой;
  • ClickHouse является реляционной SQL-подобной базой с колоночной структурой;
  • SQL-базы данных являются реляционными со строчной структурой.

Cassandra использует ширококолоночную модель данных (wide-column store), которая отличается от традиционных таблиц SQL. Данные организованы в виде ключей строк (row keys) , столбцов (columns) и значений (values). В отличие от реляционных баз данных, данные в Cassandra могут быть спроектированы для оптимизации чтения или записи.

Row Key: user123
Columns: name="Peter", age=30, city="New York"

Установка с официального сайта, а подключение идёт через консоль (cqlsh).

Администрирование выполняется при помощи графических инструментов:

  • DataStax DevCenter;
  • DBeaver (там есть поддержка Cassandra).

Фреймворки: cassandra-driver, Spring Data Cassandra.

Это распределённая NoSQL база данных, которая хранит данные на нескольких узлах (серверах) в кластере, и использует децентрализованную архитектуру без единой точки отказа (masterless architecture). Каждый узел в кластере может обрабатывать запросы на чтение и запись. Схема данных в Cassandra не фиксирована, что позволяет легко адаптироваться к изменениям в структуре данных. Cassandra оптимизирована для операций записи. Запись данных происходит очень быстро благодаря логической структуре commit log и memtable.

Для работы с данными используется CQL (Cassandra Query Language). Он очень похож на SQL, но в нём нет JOIN-ов, поддержки транзакций и имеется поддержка только первичных ключей для выборки данных. А так, в целом, основные операции там такие же (CRUD, агрегатные функции, к примеру). Мы рассмотрим SQL отдельно, так что особенности языка узнаем оттуда.

Официальный сайт Cassandra - https://cassandra.apache.org/